/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

/**
 *
 * @author Diego
 */
public class MarcoPagina {
    
    private Pagina pagina;
    private Marco marco;
    private int valido;
    
    public MarcoPagina(Pagina pag, Marco marc, int val){
        this.pagina=pag;
        this.marco=marc;
        this.valido=val;
        this.pagina.setDireccionFisica(Convertir(pag.getDireccionVirtual(),pag.getTamano(),marc.getNumeroMarco()));
        this.pagina.setNumPag(Integer.parseInt(pag.getDireccionVirtual().getEntero()) /pag.getTamano());
    }

    public MarcoPagina(){
        
    }

    /**
     * @return the pagina
     */
    public Pagina getPagina() {
        return pagina;
    }

    /**
     * @param pagina the pagina to set
     */
    public void setPagina(Pagina pagina) {
        this.pagina = pagina;
    }

    /**
     * @return the marco
     */
    public Marco getMarco() {
        return marco;
    }

    /**
     * @param marco the marco to set
     */
    public void setMarco(Marco marco) {
        this.marco = marco;
    }

    /**
     * @return the valido
     */
    public int getValido() {
        return valido;
    }

    /**
     * @param valido the valido to set
     */
    public void setValido(int valido) {
        this.valido = valido;
    }
    
    private int dividir(Direccion lógica, int tamañoPagina){
        int direccion = Integer.parseInt(lógica.getEntero());
        int desplazamiento = direccion % tamañoPagina;
        return desplazamiento;
    }
    
    public Direccion Convertir(Direccion lógica, int tamañoPagina, int numeroMarco){
        Direccion dir = new Direccion();
        int des = dividir(lógica,tamañoPagina);
        int direccionFisica = (numeroMarco*tamañoPagina)+des;
        dir.setEntero(Integer.toString(direccionFisica));
        return dir;
    }
    
    
}
